package mapgen.func {
import mapgen.vo.BarVO;
import mapgen.vo.MapVO;

import mx.utils.StringUtil;


/**
 * @author kangkai
 * 地图数据读取器
 * "\n"和String.formCharcode()还是有区别的
 */
public class MapDataReader {
	
	public var mapVO:MapVO=new MapVO();
	
	public function MapDataReader(){
		
	}
	
	private var sOut:String="";
	private function trace2(s:String):void{
		sOut+=s+"\n";
	}
	
	public function readData(s:String):String{
		sOut="";
		var i:int=0;
		
		//1,先去掉r
		//var reg:RegExp=/\r/g;
		//s=s.replace(reg,"");
		
		//2,分成大块
		var aBlock:Array=s.split("#");
		//trace2(aBlock.length+"");
		//--block0 提取地图基本信息
		//T.p("--block0 提取地图基本信息");
		aBlock[0]=StringUtil.trim(aBlock[0]);
		var aInfoLine:Array=aBlock[0].split(String.fromCharCode(13));
		
//		trace2("--");
//		trace2(aBlock[0]);
//		trace2("--");
//		var ssss:String=aBlock[0];
//		//trace2(ssss.charCodeAt(2)+"");
//		trace2("长度"+aInfoLine.length+"");
		
		
		mapVO.id=parseInt(aInfoLine[0]);
		mapVO.name=aInfoLine[1];
		mapVO.detail=aInfoLine[2];
		//mapVO.MaxPlayerCount=parseInt(aInfoLine[3]);
		mapVO.modes=null;//aInfo[4]游戏模式1,2,3
		mapVO.durSec=parseInt(aInfoLine[5]);
		mapVO.width=parseInt(aInfoLine[6]);
		mapVO.height=parseInt(aInfoLine[7]);
		
		mapVO.CC = mapVO.width/64;
		mapVO.RC = mapVO.height/64;
		
		//trace2(mapVO.id+" "+mapVO.name);
		
		//-block1,提取障碍物信息
		//T.p("-block1,提取障碍物信息");
		aBlock[1]=StringUtil.trim(aBlock[1]);
		var aBarLine:Array=aBlock[1].split(String.fromCharCode(13));//注意用"\n"是不能分开的
		for(i=0;i<aBarLine.length;i++){
			var aBarInfo:Array=aBarLine[i].split(",");//
			
			var barVO:BarVO=new BarVO();//type,hp,x,y,A,B,rot
			//barVO.id=i;
			barVO.type=parseInt(aBarInfo[0]);
			barVO.HP=parseInt(aBarInfo[1]);
			barVO.hp=barVO.HP;
			
			var x:int=parseInt(aBarInfo[2]);
			var y:int=parseInt(aBarInfo[3]);
			var z:int=parseInt(aBarInfo[4]);
			var A:int=parseInt(aBarInfo[5]);
			var B:int=parseInt(aBarInfo[6]);
			var H:int=parseInt(aBarInfo[7]);
			var rotY:int=parseInt(aBarInfo[8]);
			
			barVO.x=x;
			barVO.y=y;
			barVO.z=z;
			barVO.A=A;
			barVO.B=B;
			barVO.H=H;
			
			barVO.rotY=rotY;
			
			//--保持引用
			mapVO.aBarVO.push(barVO);
			
			trace2("障碍物："+barVO.toString());
		}
//		//-block2,提取各个玩家数据
//		var aPosiLine:Array=aBlock[2].split(Util.EDITPLUS_SPLIT);
//	
//		for(i=0;i<3;i++){
//			var aPosiInfoA:Array=aPosiLine[i].split(",");
//			x=parseInt(aPosiInfoA[0]);
//			z=parseInt(aPosiInfoA[1]);
//			rot=parseInt(aPosiInfoA[2]);
//			vo.aTeamPlayerPosiA[0]=x;
//			vo.aTeamPlayerPosiA[1]=z;
//			vo.aTeamPlayerPosiA[2]=rot;
//		}
//		
//		for(i=3;i<6;i++){
//			var aPosiInfoB:Array=aPosiLine[i].split(",");
//			x=parseInt(aPosiInfoB[0]);
//			z=parseInt(aPosiInfoB[1]);
//			rot=parseInt(aPosiInfoB[2]);
//			vo.aTeamPlayerPosiB[0]=x;
//			vo.aTeamPlayerPosiB[1]=z;
//			vo.aTeamPlayerPosiB[2]=rot;
//		}
//		
//		for(i=6;i<12;i++){
//			var aPosiInfoFree:Array=aPosiLine[i].split(",");
//			x=parseInt(aPosiInfoFree[0]);
//			z=parseInt(aPosiInfoFree[1]);
//			rot=parseInt(aPosiInfoFree[2]);
//			vo.aFreePlayerPosi[0]=x;
//			vo.aFreePlayerPosi[1]=z;
//			vo.aFreePlayerPosi[2]=rot;
//		}

//    提取aFlowerPosi位置
		
//		//-为posiM填充数据
//		posiM.Init(vo.CC, vo.RC, vo.CELLSIZE, null);
//		for each(var barVO:BarVO in vo.dict_barVO){
//			posiM.gc.Add(barVO.hardVO);
//		}

		return sOut;
	}
}
}
